# -*- coding: utf-8 -*-
# @Time    : 2024/7/29 17:08
# @Author  : yan.wei
# @Email   : 13675196684@163.com
# @File    : 拆分投诉内容列.py
# @Software: PyCharm


import pandas as pd

file_path = '投诉工单.xlsx'
df = pd.read_excel(file_path, engine='openpyxl')

# 处理的列名为 '投诉内容'
df['投诉内容'] = df['投诉内容'].astype(str)

# 定义拆分函数
def split_by_newline(text):
    # 使用换行符拆分文本
    lines = text.splitlines('\n')
    # 创建一个字典，其中键是列的名称，值是相应的行
    return {f'列_{i+1}': line for i, line in enumerate(lines)}

# 应用拆分函数到每一行
split_df = df['投诉内容'].apply(split_by_newline).apply(pd.Series)

# 定义按逗号拆分的函数
def split_by_comma(text):
    items = text.split('，')
    return {f'列_2_子列_{i+1}': item.strip() for i, item in enumerate(items)}

# 应用按逗号拆分的函数到 '列_2'
comma_split_df = split_df['列_2'].apply(split_by_comma).apply(pd.Series)

comma_split_df = pd.concat([split_df.iloc[:, :split_df.columns.get_loc('列_2') + 1], comma_split_df, split_df.iloc[:, split_df.columns.get_loc('列_2') + 1:]], axis=1)

# 将所有列转换为字符串
split_df = comma_split_df.astype(str)

# 提取冒号前后的内容的函数
def extract_columns_from_text(text):
    if '：' in text:
        column_name, column_value = text.split('：', 1)
        return {column_name.strip(): column_value.strip()}
    return {}

# 创建一个空 DataFrame 用于存储提取的数据
extracted_df = pd.DataFrame()

# 遍历 split_df 中的每一列
for column in split_df.columns:
    # 对每一列应用提取函数
    column_extracted_df = split_df[column].apply(extract_columns_from_text).apply(pd.Series)
    # 将提取结果与 extracted_df 合并
    extracted_df = pd.concat([extracted_df, column_extracted_df], axis=1)

# 保存处理后的 DataFrame 到新的 Excel 文件中
output_file_path = 'processed_excel_file_with_extracted_columns.xlsx'
extracted_df.to_excel(output_file_path, index=False, engine='openpyxl')

print("处理完成，结果已保存到:", output_file_path)


